package com.stars.services;

import com.stars.common.base.ResultMsg;

/**
 * 基类增加删除修改
 *
 * @param <T>
 */
public interface BaseConfigService<T> {
    /**
     * 保存一个实体，null的属性也会保存，不会使用数据库默认值
     *
     * @param entity
     */
    ResultMsg insert(T entity) throws Exception;

    /**
     * 保存一个实体，null的属性不会保存，会使用数据库默认值
     *
     * @param entity
     */
    ResultMsg insertSelective(T entity) throws Exception;

    /**
     * 根据实体属性作为条件进行删除，查询条件使用等号
     *
     * @param entity
     */
    ResultMsg delete(T entity) throws Exception;

    /**
     * 根据主键字段进行删除，方法参数必须包含完整的主键属性
     *
     * @param id
     */
    ResultMsg deleteById(Object id) throws Exception;

    /**
     * 根据多个主键字段进行删除，
     *
     * @param ids
     * @throws Exception
     */
    ResultMsg deleteByIds(String[] ids) throws Exception;

    /**
     * 根据主键更新实体全部字段，null值会被更新
     *
     * @param entity
     */
    ResultMsg updateById(T entity) throws Exception;

    /**
     * 根据主键更新属性不为null的值
     *
     * @param entity
     */
    ResultMsg updateSelectiveById(T entity) throws Exception;

}

